﻿using System;
using System.Collections.Generic;

using JetBrains.Annotations;

using Rsdn.SmartApp;

namespace Rsdn.Janus
{
    /// <summary>
    /// Сервис дерева навигации.
    /// </summary>
    [NotUsed]
    public interface INavigationTreeService
    {
        /// <summary>
        /// Возвращает элементы дерева навигации.
        /// </summary>
        /// <value>Элементы дерева навигации.</value>
        [NotNull]
        IList<INavigationTreeNode> Nodes { get; }

        /// <summary>
        /// Событие об изменении дерева навигации.
        /// </summary>
        /// <value>Дерево изменилось.</value>
        [NotNull]
        IObservable<EventArgs> TreeChanged { get; }

        /// <summary>
        /// Возвращает путь до элемента дерева с указанной страницей.
        /// </summary>
        /// <param name="pageName">Имя страницы.</param>
        /// <returns></returns>
        [CanBeNull]
        Path<INavigationTreeNode> GetPageNodePath([NotNull] string pageName);
    }
}